package 剑指offer;


/*
 * Author：江松
 * Date：2023/3/16 15:37

 扑克牌顺子（2副牌）：
排序，统计出0的个数，进行模拟遍历
set遍历，维护mx，mn，最值之差如果<5说明能构成顺子

[6,0,2,0,4] true
[13,12,11,0,1] false
 */

    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;

public class Main30 {
    public boolean IsContinuous2(int [] numbers) {
        Set<Integer> set=new HashSet<>();
        int mx=0,mn=100;
        for(int i:numbers){
            if(i==0)continue;
            if(set.contains(i))return false;
            else {
                set.add(i);
                mx=Math.max(mx,i);
                mn=Math.min(mn,i);
            }
        }
        System.out.println(mx-mn);
        return mx-mn<5;
    }
    public boolean IsContinuous(int [] numbers) {
        Arrays.sort(numbers);
        int i=0,cnt=0;
        while(numbers[i]==0){
            cnt++;
            i++;
        }

        for(;i<numbers.length-1;i++){
            int l=numbers[i],r=numbers[i+1];

            if(l==r)return false;
            if(r-l-1>cnt)return false;
            if(r-l==1)continue;
            else{
                cnt-=r-l-1;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        int arr[]={6,0,2,0,4};
        System.out.println(new Main30().IsContinuous2(arr));
    }
}
